package com.wordlearning.third;

import com.wordlearning.third.audio.TtsService;

/**
 * 第三方服务管理器
 * 统一管理和访问所有第三方服务
 */
public class ThirdPartyServiceManager {
    
    // TTS服务
    private final TtsService ttsService;
    
    /**
     * 构造函数
     * @param ttsService TTS服务实例
     */
    public ThirdPartyServiceManager(TtsService ttsService) {
        this.ttsService = ttsService;
    }
    
    /**
     * 获取TTS服务
     * @return TtsService实例
     */
    public TtsService getTtsService() {
        return ttsService;
    }
    
    /**
     * 检查所有第三方服务的可用性
     * @return 服务可用性检查结果
     */
    public boolean checkServicesAvailability() {
        try {
            // 检查TTS服务
            ttsService.getServiceInfo();
            return true;
        } catch (Exception e) {
            // 如果任何服务不可用，返回false
            return false;
        }
    }
    
    /**
     * 获取服务状态信息
     * @return 服务状态信息映射
     */
    public ServiceStatus getServiceStatus() {
        ServiceStatus status = new ServiceStatus();
        
        try {
            // 检查TTS服务
            ttsService.getServiceInfo();
            status.setTtsServiceAvailable(true);
        } catch (Exception e) {
            status.setTtsServiceAvailable(false);
            status.setTtsServiceError(e.getMessage());
        }
        
        return status;
    }
    
    /**
     * 服务状态类
     * 封装各服务的状态信息
     */
    public static class ServiceStatus {
        private boolean ttsServiceAvailable = false;
        private String ttsServiceError = null;
        
        public boolean isTtsServiceAvailable() {
            return ttsServiceAvailable;
        }
        
        public void setTtsServiceAvailable(boolean ttsServiceAvailable) {
            this.ttsServiceAvailable = ttsServiceAvailable;
        }
        
        public String getTtsServiceError() {
            return ttsServiceError;
        }
        
        public void setTtsServiceError(String ttsServiceError) {
            this.ttsServiceError = ttsServiceError;
        }
        
        /**
         * 检查所有服务是否可用
         * @return 是否所有服务都可用
         */
        public boolean isAllServicesAvailable() {
            return ttsServiceAvailable;
        }
        
        @Override
        public String toString() {
            return "ServiceStatus{" +
                    "ttsServiceAvailable=" + ttsServiceAvailable +
                    ", ttsServiceError='" + ttsServiceError + '"' +
                    '}';
        }
    }
}